const express = require('express');
const app = express();
const httpServer = require('http').createServer(app);
const sk = require('socket.io')

const config = require('./config/index.js')
const registerRoutes = require('./routes/index.js');
const registerSocket = require('./utils/socket.js');
const registerMiddleware = require('./middleware/index.js');

// 配置中间件
registerMiddleware(app)
//配置虚拟目录的静态web服务
// http://localhost:8000/images/1.png
app.use(express.static('public'));
//http://localhost:8000/static/images/1.png
//images/1.png去public目录找这个文件，如果有就返回
//指向的都是同一个文件夹  区别在于访问的路径不一样
app.use('/static', express.static('public'));
// 注册路由
registerRoutes(app)
// 注册 websocket
const io = sk(httpServer, {
 cors: {
  origin: '*', // 允许所有来源的跨域请求，在生产环境中应该指定具体的源
  methods: ['GET', 'POST']
 },
 // methods: 允许的 HTTP 方法列表。默认值为 ['GET', 'POST']。
 // allowRequest: 一个函数，用于自定义请求验证逻辑。
 // path: 客户端连接到 Socket.IO 服务器的路径。默认值为 /socket.io。
});
registerSocket(io)


httpServer.listen(config.port, () => {
 console.log(`server服务启动，正在监听 ${config.port} 端口`);
})


// app.listen(config.port,()=>{
//  console.log(`服务启动，正在监听 ${config.port} 端口`);
// })

module.export = app